package com.ruyuan2020.im.design.mandator.use;


import com.ruyuan2020.im.design.mandator.use.command.Command;

import java.util.Stack;

/**
 * 定义一个调用者类SmartHomeController，它不直接调用接收者，而是使用命令对象来执行操作，如下代码：
 */
// 智能家居控制器类，作为调用者
public class SmartHomeController {

    private Stack<Command> commandStack = new Stack<>();

    // 执行命令，并将命令压入栈中以支持撤销
    public void executeCommand(Command command) {
        command.execute();
        commandStack.push(command);
    }

    // 撤销上一个命令
    public void undoLastCommand() {
        if (!commandStack.isEmpty()) {
            Command lastCommand = commandStack.pop();
            lastCommand.undo();
        }
    }
}
